const Service = require('egg').Service;
const _ = require('lodash');


class EventService extends Service {
    // 默认不需要提供构造函数。
    //constructor(ctx) {
    // super(ctx);
    //如果需要在构造函数做一些处理，一定要有这句话，才能保证后面 `this.ctx`的使用。
    // 就可以直接通过 this.ctx 获取 ctx 了
    // 还可以直接通过 this.app 获取 app 了
    //}

    /**
     * 添加事件操作记录
     * @param data
     * @param user
     * @returns {Promise<void>}
     */

    async add(data, user) {
        if (!user)
            user = this.ctx.user;

        let value;
        if (_.isString(data))
            value = data;
        else {
            value = {content: data.content};
            if (data.anchor) {
                if (data.anchor.id && data.anchor.name)
                    value.anchor = data.anchor;
                else
                    value.anchor = await this.app.model.DetailAnchor.findOne({
                        raw: true,
                        where: {id: data.anchor.id},
                        attributes: ['id', 'name'],
                    });
            }
            if (data.project) {
                if (data.project.id && data.project.name)
                    value.project = data.project;
                else
                    value.project = await this.app.model.Project.findOne({
                        raw: true,
                        where: {id: data.project.id},
                        attributes: ['id', 'name'],
                    });
            }
        }
        await this.app.model.Event.create({user_id: user.id, value});
    }
}

module.exports = EventService;